package com.doublethread.easymart.modules.cart.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.doublethread.easymart.modules.cart.dto.CartAddDTO;
import com.doublethread.easymart.modules.cart.dto.CartUpdateDTO;
import com.doublethread.easymart.modules.cart.entity.Cart;
import com.doublethread.easymart.modules.cart.vo.CartVO;

import java.util.List;

/**
 * 购物车服务接口
 */
public interface CartService extends IService<Cart> {

    /**
     * 获取用户购物车列表
     */
    List<CartVO> getUserCartList(Long userId);

    /**
     * 添加商品到购物车
     */
    void addToCart(Long userId, CartAddDTO cartAddDTO);

    /**
     * 更新购物车商品数量
     */
    void updateCartItem(Long userId, Long cartId, CartUpdateDTO cartUpdateDTO);

    /**
     * 删除购物车商品
     */
    void removeCartItem(Long userId, Long cartId);

    /**
     * 批量删除购物车商品
     */
    void removeCartItems(Long userId, List<Long> cartIds);

    /**
     * 清空用户购物车
     */
    void clearUserCart(Long userId);

    /**
     * 获取购物车商品总数量
     */
    Integer getCartItemCount(Long userId);

    /**
     * 检查购物车商品库存
     */
    void checkCartStock(Long userId, List<Long> cartIds);

    /**
     * 获取选中的购物车商品
     */
    List<CartVO> getSelectedCartItems(Long userId, List<Long> cartIds);
}
